﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using CasaBella.Entities;
using CasaBella.BL;
using Microsoft.Practices.Unity;

namespace CasaBella.UI
{
    public partial class FrmMedida : Form
    {
        [Dependency]
        public IMedidaColchonBL mColcBL { get; set; }

        [Dependency]
        public IMedidaMuebleBL mMuebleBL { get; set; }

        public FrmMedida()
        {
            InitializeComponent();
            this.BuilUp();
        }

        private void FrmMedida_Load(object sender, EventArgs e)
        {
            cargaData();
        }

        public void cargaData()
        {
            mEDIDA_COLCHONBindingSource.DataSource = mColcBL.GetAllFromMedidaColchon();
            mEDIDA_MUEBLEBindingSource.DataSource = mMuebleBL.GetAllFromMedidaMueble();
        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
            if (tabControl1.SelectedTab == tabColchon)
            {
                mEDIDA_COLCHONBindingSource.DataSource = mColcBL.GetAllFromMedidaColchonByCriterio(TxtCriterio.Text);
                if (mEDIDA_COLCHONBindingSource.Count == 0)
                {
                    MessageBox.Show("Medida no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else if (tabControl1.SelectedTab == tabMueble)
            {
                mEDIDA_MUEBLEBindingSource.DataSource = mMuebleBL.GetAllFromMedidaMuebleByCriterio(TxtCriterio.Text);
                if (mEDIDA_MUEBLEBindingSource.Count == 0)
                {
                    MessageBox.Show("Medida no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
        }

        private void TxtCriterio_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                if (tabControl1.SelectedTab == tabColchon)
                {
                    mEDIDA_COLCHONBindingSource.DataSource = mColcBL.GetAllFromMedidaColchonByCriterio(TxtCriterio.Text);
                    if (mEDIDA_COLCHONBindingSource.Count == 0)
                    {
                        MessageBox.Show("Medida no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                else if (tabControl1.SelectedTab == tabMueble)
                {
                    mEDIDA_MUEBLEBindingSource.DataSource = mMuebleBL.GetAllFromMedidaMuebleByCriterio(TxtCriterio.Text);
                    if (mEDIDA_MUEBLEBindingSource.Count == 0)
                    {
                        MessageBox.Show("Medida no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
            }
        }

        private void btnNuevo_Click(object sender, EventArgs e)
        {
            FrmMttoMedida frm = new FrmMttoMedida();
            frm.NuevaMedida();
            frm.ShowDialog();
            cargaData();
        }

        private void btnEditar_Click(object sender, EventArgs e)
        {
            var mColc = mEDIDA_COLCHONBindingSource.Current as MEDIDA_COLCHON;
            var mMueble = mEDIDA_MUEBLEBindingSource.Current as MEDIDA_MUEBLE;

            if (tabControl1.SelectedTab == tabColchon)
            {
                if (mColc != null)
                {
                    FrmMttoMedida frm = new FrmMttoMedida();
                    frm._medidaColc = mColc;
                    frm.EditarMedida();
                    frm.ShowDialog();
                    cargaData();
                }
                else
                {
                    MessageBox.Show("Debe seleccionar una Medida.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else if (tabControl1.SelectedTab == tabMueble)
            {
                if (mMueble != null)
                {
                    FrmMttoMedida frm = new FrmMttoMedida();
                    frm._medidaMueble = mMueble;
                    frm.EditarMedida();
                    frm.ShowDialog();
                    cargaData();
                }
                else
                {
                    MessageBox.Show("Debe seleccionar una Medida.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            var mColc = mEDIDA_COLCHONBindingSource.Current as MEDIDA_COLCHON;
            var mMueble = mEDIDA_MUEBLEBindingSource.Current as MEDIDA_MUEBLE;

            if (tabControl1.SelectedTab == tabColchon)
            {
                if (mColc != null)
                {
                    var rpt = MessageBox.Show(this,
                    string.Format("¿Desea Eliminar la Medida: " + mColc.Descripcion + "?"),
                    "Mensaje",
                    MessageBoxButtons.YesNo,
                    MessageBoxIcon.Question);
                    if (rpt == DialogResult.Yes)
                    {
                        mColcBL.DeleteMedidaColchon(mColc.Id);
                        cargaData();
                    }
                }
                else
                {
                    MessageBox.Show("Debe seleccionar una Medida.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else if (tabControl1.SelectedTab == tabMueble)
            {
                if (mMueble != null)
                {
                    var rpt = MessageBox.Show(this,
                    string.Format("¿Desea Eliminar la Medida: " + mMueble.Descripcion + "?"),
                    "Mensaje",
                    MessageBoxButtons.YesNo,
                    MessageBoxIcon.Question);
                    if (rpt == DialogResult.Yes)
                    {
                        mMuebleBL.DeleteMedidaMueble(mMueble.Id);
                        cargaData();
                    }
                }
                else
                {
                    MessageBox.Show("Debe seleccionar una Medida.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
        }

        private void TxtCriterio_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsLetter(e.KeyChar) || Char.IsNumber(e.KeyChar) || Char.IsPunctuation(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsSeparator(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }
    }
}
